package com.pig4cloud.pig.common.swagger.annotation;

/**
 * <p>Project: bblocks-pro - ApiGlobalModel</p>
 * <p>描述：</p>
 *
 * @Author Zhao [125043150@qq.com]
 * @Date 2024/2/29 22:03
 * @Version 1.0
 * @since 8
 */
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * https://codeantenna.com/a/Z1aSi3JFEs
 * Swagger扩展注解
 * 使用统一bean 局部参数形成入参文档
 *
 * 例如：
 *  @ApiGlobalModel(component = GlobalVo.class, value = "code,aliCode,otherType")
 */
@Target({ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiGlobalModel {
    /**
     * 字段集合容器
     *
     * @return Global model
     */
    Class<?> component();

    /**
     * 分隔符
     *
     * @return separator
     */
    String separator() default ",";

    /**
     * 实际用到的字段
     * 可以是字符串数组,也可以是一个字符串 多个字段以分隔符隔开: "id,name"
     * 注意这里对应的是component里的属性名,但swagger显示的字段名实际是属性注解上的name
     *
     * @return value
     */
    String[] value() default {};

    /**
     * 自定义 Model的名字，非必填（为空系统指定）
     */
    String modelName() default "";
}